{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\".\\\\diyLogo.png\" alt=\"some_text\">\n",
    "<h1> 第七讲 绘图初步</h1>\n",
    "<a id=backup></a>\n",
    "<H2>目录</H2>  \n",
    "\n",
    "[7.1 Matplotlib简介](#Section1)      \n",
    "[7.2 Turtle简介](#Section2)      \n",
    "[7.3 PIL简介](#Section3)   \n",
    "[7.4 PyVista简介](#Section4) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section1> </a>\n",
    "## 7.1 Matplotlib\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7.1.1 Matplotlib 画布\n",
    "\n",
    "figure(画布)、axes(坐标系)、axis(坐标轴)三者之间的关系。\n",
    "\n",
    "<img src=\"./img/matplotlib_fig.png\" alt=\"Matplotlib_Figure\" width=\"300\">\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"./img/matplotlib_fig2.png\" alt=\"Matplotlib_Figure2\" width=\"300\">"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.__dict__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 创建figure(画布)的两种方式\n",
    "**隐式创建和显式创建**<br>\n",
    "+ **隐式创建figure对象**   \n",
    "  当第一次执行plt.xxx()这句绘图代码时，系统会去判断是否已经有了figure对象，如果没有，系统会自动创建一个figure对象，并且在这个figure之上，自动创建一个axes坐标系(注意：默认创建一个figure对象，一个axes坐标系)。   \n",
    "  也就是说，如果我们不设置figure对象，那么一个figure对象上，只能有一个axes坐标系，即我们只能绘制一个图形。\n",
    "  \n",
    "\n",
    "+ **隐式创建figure对象存在的问题**   \n",
    "  优点：如果只是绘制一个小图形，那么直接使用plt.xxx()的方式，会自动帮我们创建一个figure对象和一个axes坐标系，这个图形最终就是绘制在这个axes坐标系之上的。   \n",
    "  缺点：如果我们想要在一个figure对象上，绘制多个图形，那么我们就必须拿到每个axes对象，然后调用每个位置上的axes对象，就可以在每个对应位置的坐标系上，进行绘图，如下图所示。注意：如果figure对象是被默认创建的，那么我们根本拿不到axes对象。因此，需要我们显示创建figure对象。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.          5.02351155  8.68729618  9.9996678   8.60540338  4.88189209\n",
      " -0.16301361 -5.163796   -8.76688031 -9.99701037 -8.52122368 -4.73897526\n",
      "  0.3259839   5.30270815  8.84413462  9.99169621  8.43477945  4.59479904\n",
      " -0.48886756 -5.44021111]\n"
     ]
    }
   ],
   "source": [
    "from math import sin \n",
    "x=np.linspace(0,10,20)\n",
    "x=np.sin(x)*10\n",
    "y=np.random.randn(20)*10\n",
    "print(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1)隐式创建"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 隐式创建\n",
    "%matplotlib inline\n",
    "\n",
    "plt.plot(y,\"^--g\",label=\"Y\")\n",
    "plt.plot(x,'o-b',label=\"X\")\n",
    "plt.title(\"test matplotlib\")\n",
    "plt.xlabel(\"X\")\n",
    "plt.ylabel(\"Y\")\n",
    "plt.xticks(np.arange(0,20,2))\n",
    "plt.yticks(np.arange(-25,25,5))\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2)显式创建\n",
    "* figure 画布\n",
    "* axes 坐标系，一个画布上可以有多个坐标系\n",
    "* axis 坐标轴，一个坐标系中可以有多个坐标轴，一般都是二维平面坐标系，或者三维立体坐标系\n",
    "* title 标题\n",
    "* legend 图例\n",
    "* grid 背景网格\n",
    "* tick 刻度\n",
    "* axis label 坐标轴名称\n",
    "* tick label 刻度名称\n",
    "    * major tick label 主刻度标签\n",
    "    * minor tick label 副刻度标签\n",
    "* line 线\n",
    "* style 线条样式\n",
    "* marker 点标记\n",
    "* font 字体相关\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\zeng_\\AppData\\Local\\Temp\\ipykernel_18720\\3588945900.py:12: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n",
      "  figure.show()\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "figure = plt.figure()\n",
    "axes1 = figure.add_subplot(2,1,1)\n",
    "axes2 = figure.add_subplot(2,1,2)\n",
    "\n",
    "axes1.plot([1,3,5,7],[4,9,6,8],label=\"Line A\")\n",
    "axes2.plot([1,2,4,5],[8,4,6,2],label=\"Line B\")\n",
    "\n",
    "axes1.set(xlim=[0, 8], ylim=[0, 10], title='An Example Axes',\n",
    "       ylabel='Y-Axis', xlabel='X-Axis')\n",
    "axes2.set(xlim=[0, 6], ylim=[0, 10], title='An Example Axes',\n",
    "       ylabel='Y-Axis', xlabel='X-Axis')\n",
    "figure.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.2.3 Multiple Axes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0.5, 1.0, 'Lower Right')]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(nrows=2, ncols=2)\n",
    "axes[0,0].set(title='Upper Left')\n",
    "axes[0,1].set(title='Upper Right')\n",
    "axes[1,0].set(title='Lower Left')\n",
    "axes[1,1].set(title='Lower Right')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2. 基本绘图2D\n",
    "2.1 线\n",
    "plot()函数画出一系列的点，并且用线将它们连接起来。看下例子："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1ededa2f070>]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0, np.pi)\n",
    "y_sin = np.sin(x)\n",
    "y_cos = np.cos(x)\n",
    "fig = plt.figure()\n",
    "ax1 = fig.add_subplot(221)\n",
    "ax2 = fig.add_subplot(222)\n",
    "ax3 = fig.add_subplot(224)\n",
    "ax1.plot(x, y_sin)\n",
    "ax2.plot(x, y_sin, 'go--', linewidth=2, markersize=12)\n",
    "ax3.plot(x, y_cos, color='red', marker='+', linestyle='dashed')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "help(pd.Series)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "另外，我们可以通过关键字参数的方式绘图，如下例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "x = np.linspace(0, 10, 200)\n",
    "data_obj = {'x': x,\n",
    "            'y1': 2 * x + 1,\n",
    "            'y2': 3 * x + 1.2,\n",
    "            'mean': 0.5 * x * np.cos(2*x) + 2.5 * x + 1.1}\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "#填充两条线之间的颜色\n",
    "ax.fill_between('x', 'y1', 'y2', color='yellow', data=data_obj)\n",
    "\n",
    "# Plot the \"centerline\" with `plot`\n",
    "ax.plot('x', 'mean', color='black', data=data_obj)\n",
    "\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "发现上面的作图，在数据部分只传入了字符串，这些字符串对一个这 data_obj 中的关键字，当以这种方式作画时，将会在传入给 data 中寻找对应关键字的数据来绘图。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.1.2 散点图\n",
    "只画点，但是不用线连接起来。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.arange(10)\n",
    "y = np.random.randn(10)\n",
    "plt.scatter(x, y, color='red', marker='+')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.1.3 条形图\n",
    "条形图分两种，一种是水平的，一种是垂直的，见下例子："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(1)\n",
    "x = np.arange(5)\n",
    "y = np.random.randn(5)\n",
    "\n",
    "fig, axes = plt.subplots(ncols=2, figsize=plt.figaspect(1./2))\n",
    "\n",
    "vert_bars = axes[0].bar(x, y, color='lightblue', align='center')\n",
    "horiz_bars = axes[1].barh(x, y, color='lightblue', align='center')\n",
    "#在水平或者垂直方向上画线\n",
    "axes[0].axhline(0, color='gray', linewidth=2)\n",
    "axes[1].axvline(0, color='gray', linewidth=2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "条形图还返回了一个Artists 数组，对应着每个条形，例如上图 Artists 数组的大小为5，我们可以通过这些 Artists 对条形图的样式进行更改，如下例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "vert_bars = ax.bar(x, y, color='lightblue', align='center')\n",
    "\n",
    "# We could have also done this with two separate calls to `ax.bar` and numpy boolean indexing.\n",
    "for bar, height in zip(vert_bars, y):\n",
    "    if height < 0:\n",
    "        bar.set(edgecolor='darkred', color='salmon', linewidth=3)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.1.4 直方图\n",
    "直方图用于统计数据出现的次数或者频率，有多种参数可以调整，见下例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(19680801)\n",
    "\n",
    "n_bins = 10\n",
    "x = np.random.randn(1000, 3)\n",
    "\n",
    "fig, axes = plt.subplots(nrows=2, ncols=2)\n",
    "ax0, ax1, ax2, ax3 = axes.flatten()\n",
    "\n",
    "colors = ['red', 'tan', 'lime']\n",
    "ax0.hist(x, n_bins, density=True, histtype='bar', color=colors, label=colors)\n",
    "ax0.legend(prop={'size': 10})\n",
    "ax0.set_title('bars with legend')\n",
    "\n",
    "ax1.hist(x, n_bins, density=True, histtype='barstacked')\n",
    "ax1.set_title('stacked bar')\n",
    "\n",
    "ax2.hist(x,  histtype='barstacked', rwidth=0.9)\n",
    "\n",
    "ax3.hist(x[:, 0], rwidth=0.9)\n",
    "ax3.set_title('different sample sizes')\n",
    "\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "参数中density控制Y轴是概率还是数量，与返回的第一个的变量对应。histtype控制着直方图的样式，默认是 ‘bar’，对于多个条形时就相邻的方式呈现如子图1， ‘barstacked’ 就是叠在一起，如子图2、3。 rwidth 控制着宽度，这样可以空出一些间隙，比较图2、3. 图4是只有一条数据时。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.1.5 饼图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'\n",
    "sizes = [15, 30, 45, 10]\n",
    "explode = (0, 0.1, 0, 0)  # only \"explode\" the 2nd slice (i.e. 'Hogs')\n",
    "\n",
    "fig1, (ax1, ax2) = plt.subplots(2)\n",
    "ax1.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True)\n",
    "ax1.axis('equal')\n",
    "ax2.pie(sizes, autopct='%1.2f%%', shadow=True, startangle=90, explode=explode,\n",
    "    pctdistance=1.12)\n",
    "ax2.axis('equal')\n",
    "ax2.legend(labels=labels, loc='upper right')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "饼图自动根据数据的百分比画饼.。labels是各个块的标签，如子图一。autopct=%1.1f%%表示格式化百分比精确输出，explode，突出某些块，不同的值突出的效果不一样。pctdistance=1.12百分比距离圆心的距离，默认是0.6."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.1.6 箱形图\n",
    "为了专注于如何画图，省去数据的处理部分。 data 的 shape 为 (n, )， data2 的 shape 为 (n, 3)。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "fig, (ax1, ax2) = plt.subplots(2)\n",
    "data=np.arange(1,5,1)\n",
    "data2=np.arange(1,15,1)\n",
    "data2.resize(5,3)\n",
    "ax1.boxplot(data)\n",
    "ax2.boxplot(data2, vert=False) #控制方向"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.1.7 泡泡图\n",
    "散点图的一种，加入了第三个值 s 可以理解成普通散点，画的是二维，泡泡图体现了Z的大小，如下例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(66190801)\n",
    "\n",
    "\n",
    "N = 50\n",
    "x = np.random.rand(N)\n",
    "y = np.random.rand(N)\n",
    "colors = np.random.rand(N)\n",
    "area = (30 * np.random.rand(N))**2  # 0 to 15 point radii\n",
    "\n",
    "plt.scatter(x, y, s=area, c=colors, alpha=0.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.1.8 等高线（轮廓图）\n",
    "有时候需要描绘边界的时候，就会用到轮廓图，机器学习用的决策边界也常用轮廓图来绘画，见下例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.contour.QuadContourSet at 0x18e0077aa60>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, (ax1, ax2) = plt.subplots(2)\n",
    "x = np.arange(-5, 5, 0.1)\n",
    "y = np.arange(-5, 5, 0.1)\n",
    "xx, yy = np.meshgrid(x, y, sparse=True)\n",
    "z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)\n",
    "ax1.contourf(x, y, z)\n",
    "ax2.contour(x, y, z)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.1.9 布局、图例说明、边界等\n",
    "### 1)区间上下限\n",
    "当绘画完成后，会发现X、Y轴的区间是会自动调整的，并不是跟我们传入的X、Y轴数据中的最值相同。为了调整区间我们使用下面的方式："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ax.set_xlim([xmin, xmax])   #设置X轴的区间\n",
    "ax.set_ylim([ymin, ymax])   #Y轴区间\n",
    "ax.axis([xmin, xmax, ymin, ymax])   #X、Y轴区间\n",
    "ax.set_ylim(bottom=-10)     #Y轴下限\n",
    "ax.set_xlim(right=25)       #X轴上限b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "具体效果见下例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0, 2*np.pi)\n",
    "y = np.sin(x)\n",
    "fig, (ax1, ax2) = plt.subplots(2)\n",
    "ax1.plot(x, y)\n",
    "ax2.plot(x, y)\n",
    "ax2.set_xlim([-1, 6])\n",
    "ax2.set_ylim([-1, 3])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2) 图例说明\n",
    "我们如果我们在一个Axes上做多次绘画，那么可能出现分不清哪条线或点所代表的意思。这个时间添加图例说明，就可以解决这个问题了，见下例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.plot([1, 2, 3, 4], [10, 20, 25, 30], label='Philadelphia')\n",
    "ax.plot([1, 2, 3, 4], [30, 23, 13, 4], label='Boston')\n",
    "ax.scatter([1, 2, 3, 4], [20, 10, 30, 15], label='Point')\n",
    "ax.set(ylabel='Temperature (deg C)', xlabel='Time', title='A tale of two cities')\n",
    "ax.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在绘图时传入 label 参数，并最后调用ax.legend()显示体力说明，对于 legend 还是传入参数，控制图例说明显示的位置：\n",
    "\n",
    "<table><thead><tr><th>Location String</th><th align=\"center\">Location Code</th></tr></thead><tbody><tr><td>‘best’</td><td align=\"center\">0</td></tr><tr><td>‘upper right’</td><td align=\"center\">1</td></tr><tr><td>‘upper left’</td><td align=\"center\">2</td></tr><tr><td>‘lower left’</td><td align=\"center\">3</td></tr><tr><td>‘lower right’</td><td align=\"center\">4</td></tr><tr><td>‘right’</td><td align=\"center\">5</td></tr><tr><td>‘center left’</td><td align=\"center\">6</td></tr><tr><td>‘center right’</td><td align=\"center\">7</td></tr><tr><td>‘lower center’</td><td align=\"center\">8</td></tr><tr><td>‘upper center’</td><td align=\"center\">9</td></tr><tr><td>‘center’</td><td align=\"center\">10</td></tr></tbody></table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3) 区间分段\n",
    "默认情况下，绘图结束之后，Axes 会自动的控制区间的分段。见下例："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = [('apples', 2), ('oranges', 3), ('peaches', 1)]\n",
    "fruit, value = zip(*data)\n",
    "\n",
    "fig, (ax1, ax2) = plt.subplots(2)\n",
    "x = np.arange(len(fruit))\n",
    "ax1.bar(x, value, align='center', color='gray')\n",
    "ax2.bar(x, value, align='center', color='gray')\n",
    "\n",
    "ax2.set(xticks=x, xticklabels=fruit)\n",
    "\n",
    "#ax.tick_params(axis='y', direction='inout', length=10) #修改 ticks 的方向以及长度\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上面不仅修改了X轴的区间段，并且修改了显示的信息为文本。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4) 布局\n",
    "当我们绘画多个子图时，就会有一些美观的问题存在，例如子图之间的间隔，子图与画板的外边间距以及子图的内边距，下面说明这个问题："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 648x648 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(2, 2, figsize=(9, 9))\n",
    "fig.subplots_adjust(wspace=0.5, hspace=0.3,\n",
    "                    left=0.125, right=0.9,\n",
    "                    top=0.9,    bottom=0.1)\n",
    "\n",
    "#fig.tight_layout() #自动调整布局，使标题之间不重叠\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过fig.subplots_adjust()我们修改了子图水平之间的间隔wspace=0.5，垂直方向上的间距hspace=0.3，左边距left=0.125 等等，这里数值都是百分比的。以 [0, 1] 为区间，选择left、right、bottom、top 注意 top 和 right 是 0.9 表示上、右边距为百分之10。\n",
    "\n",
    "不确定如果调整的时候，fig.tight_layout()是一个很好的选择。之前说到了内边距，内边距是子图的，也就是 Axes 对象，所以这样使用 ax.margins(x=0.1, y=0.1)，当值传入一个值时，表示同时修改水平和垂直方向的内边距。\n",
    "\n",
    "观察上面的四个子图，可以发现他们的X、Y的区间是一致的，而且这样显示并不美观，所以可以调整使他们使用一样的X、Y轴：\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, (ax1, ax2) = plt.subplots(1, 2, sharex=True, sharey=True)\n",
    "ax1.plot([1, 2, 3, 4], [1, 2, 3, 4])\n",
    "ax2.plot([3, 4, 5, 6], [6, 5, 4, 3])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5) 轴相关\n",
    "改变边界的位置，去掉四周的边框："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.plot([-2, 2, 3, 4], [-10, 20, 25, 5])\n",
    "ax.spines['top'].set_visible(False)     #顶边界不可见\n",
    "ax.xaxis.set_ticks_position('bottom')  # ticks 的位置为下方，分上下的。\n",
    "ax.spines['right'].set_visible(False)   #右边界不可见\n",
    "ax.yaxis.set_ticks_position('left')  \n",
    "\n",
    "# \"outward\"\n",
    "# 移动左、下边界离 Axes 10 个距离\n",
    "#ax.spines['bottom'].set_position(('outward', 10))\n",
    "#ax.spines['left'].set_position(('outward', 10))\n",
    "\n",
    "# \"data\"\n",
    "# 移动左、下边界到 (0, 0) 处相交\n",
    "ax.spines['bottom'].set_position(('data', 0))\n",
    "ax.spines['left'].set_position(('data', 0))\n",
    "\n",
    "# \"axes\"\n",
    "# 移动边界，按 Axes 的百分比位置\n",
    "#ax.spines['bottom'].set_position(('axes', 0.75))\n",
    "#ax.spines['left'].set_position(('axes', 0.3))\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section2> </a>\n",
    "## 7.2 Turtle\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Turtle库是Python语言中一个很流行的绘制图像的函数库，想象一个小乌龟，在一个横轴为x、纵轴为y的坐标系原点，(0,0)位置开始，它根据一组函数指令的控制，在这个平面坐标系中移动，从而在它爬行的路径上绘制了图形。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7.2.1. 画布(canvas)\n",
    "\n",
    "画布就是turtle为我们展开用于绘图区域，我们可以设置它的大小和初始位置。\n",
    "\n",
    "设置画布大小<br>\n",
    "` turtle.screensize(canvwidth=None, canvheight=None, bg=None)`   \n",
    "参数分别为画布的宽(单位像素), 高, 背景颜色。\n",
    "\n",
    "如：`turtle.screensize(800,600, \"green\")`\n",
    "\n",
    "        turtle.screensize() #返回默认大小(400, 300)\n",
    "\n",
    "`turtle.setup(width=0.5, height=0.75, startx=None, starty=None)`<br>参数：width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例，(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。\n",
    "\n",
    "如：turtle.setup(width=0.6,height=0.6)\n",
    "\n",
    "        turtle.setup(width=800,height=800, startx=100, starty=100)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.2.2. 画笔\n",
    "\n",
    "### 1) 画笔的状态\n",
    "\n",
    "        在画布上，默认有一个坐标原点为画布中心的坐标轴，坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语：坐标原点(位置)，面朝x轴正方向(方向)， turtle绘图中，就是使用位置方向描述小乌龟(画笔)的状态。\n",
    "\n",
    "### 2) 画笔的属性\n",
    "\n",
    "        画笔(画笔的属性，颜色、画线的宽度等)\n",
    "\n",
    "        1) turtle.pensize()：设置画笔的宽度；\n",
    "\n",
    "        2) turtle.pencolor()：没有参数传入，返回当前画笔颜色，传入参数设置画笔颜色，可以是字符串如\"green\", \"red\",也可以是RGB 3元组。\n",
    "\n",
    "        3) turtle.speed(speed)：设置画笔移动速度，画笔绘制的速度范围[0,10]整数，数字越大越快。\n",
    "\n",
    "### 3) 绘图命令\n",
    "\n",
    "         操纵海龟绘图有着许多的命令，这些命令可以划分为3种：一种为运动命令，一种为画笔控制命令，还有一种是全局控制命令。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**(1)    画笔运动命令**\n",
    "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td> <p align=\"center\"><span style=\"font-size:14px\">命令</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">说明</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.forward(distance)</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">向当前画笔方向移动distance像素长度</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.backward(distance)</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">向当前画笔相反方向移动distance像素长度</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.right(degree)</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">顺时针移动degree°</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.left(degree)</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">逆时针移动degree°</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.pendown()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">移动时绘制图形，缺省时也为绘制</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.goto(x,y)</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">将画笔移动到坐标为x,y的位置</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.penup()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">提起笔移动，不绘制图形，用于另起一个地方绘制</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.circle()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">画圆，半径为正(负)，表示圆心在画笔的左边(右边)画圆</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">setx( )</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">将当前x轴移动到指定位置</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">sety( )</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">将当前y轴移动到指定位置</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">setheading(angle)</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">设置当前朝向为angle角度</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">home()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">设置当前画笔位置为原点，朝向东。</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">dot(r)</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">绘制一个指定直径和颜色的圆点</span></p> </td></tr></tbody></table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**(2)     画笔控制命令**\n",
    "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td> <p align=\"center\"><span style=\"font-size:14px\">命令</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">说明</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.fillcolor(colorstring)</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">绘制图形的填充颜色</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.color(color1, color2)</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">同时设置pencolor=color1, fillcolor=color2</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.filling()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">返回当前是否在填充状态</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.begin_fill()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">准备开始填充图形</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.end_fill()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">填充完成</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.hideturtle()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">隐藏画笔的turtle形状</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.showturtle()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">显示画笔的turtle形状</span></p> </td></tr></tbody></table>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**(3)    全局控制命令**\n",
    "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td> <p align=\"center\"><span style=\"font-size:14px\">命令</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">说明</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.clear()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">清空turtle窗口，但是turtle的位置和状态不会改变</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.reset()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">清空窗口，重置turtle状态为起始状态</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.undo()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">撤销上一个turtle动作</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.isvisible()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">返回当前turtle是否可见</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">stamp()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">复制当前图形</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.write(s [,font=(\"font-name\",font_size,\"font_type\")])</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">写文本，s为文本内容，font是字体的参数，分别为字体名称，大小和类型；font为可选项，font参数也是可选项</span></p> </td></tr></tbody></table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**(4)    其他命令**\n",
    "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td> <p align=\"center\"><span style=\"font-size:14px\">命令</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\">说明</span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.mainloop()或turtle.done()</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\"><span style=\"color:rgb(34,34,34)\">启动事件循环</span><span style=\"color:rgb(34,34,34)\"> -</span><span style=\"color:rgb(34,34,34)\">调用</span><span style=\"color:rgb(34,34,34)\">Tkinter</span><span style=\"color:rgb(34,34,34)\">的</span><span style=\"color:rgb(34,34,34)\">mainloop</span><span style=\"color:rgb(34,34,34)\">函数。</span></span></p> <p align=\"center\"><span style=\"color:rgb(34,34,34)\"><span style=\"font-size:14px\">必须是乌龟图形程序中的最后一个语句。</span></span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.mode(mode=None)</span></p> </td><td> <p align=\"center\"><span style=\"font-size:14px\"><span style=\"color:rgb(34,34,34)\">设置乌龟模式（</span><span style=\"color:rgb(34,34,34)\">“standard”</span><span style=\"color:rgb(34,34,34)\">，</span><span style=\"color:rgb(34,34,34)\">“logo”</span><span style=\"color:rgb(34,34,34)\">或</span><span style=\"color:rgb(34,34,34)\">“world”</span><span style=\"color:rgb(34,34,34)\">）并执行重置。如果没有给出模式，则返回当前模式。</span></span></p> \n",
    "     <div align=\"center\"> \n",
    "      <div class=\"table-box\"><table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td> <p align=\"center\"><span style=\"color:#222222\"><span style=\"font-size:14px\">模式</span></span></p> </td><td> <p align=\"center\"><span style=\"color:#222222\"><span style=\"font-size:14px\">初始龟标题</span></span></p> </td><td> <p align=\"center\"><span style=\"color:#222222\"><span style=\"font-size:14px\">正角度</span></span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"color:rgb(34,34,34)\"><span style=\"font-size:14px\">standard</span></span></p> </td><td> <p align=\"center\"><span style=\"color:#222222\"><span style=\"font-size:14px\">向右（东）</span></span></p> </td><td> <p align=\"center\"><span style=\"color:#222222\"><span style=\"font-size:14px\">逆时针</span></span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"color:rgb(34,34,34)\"><span style=\"font-size:14px\">logo</span></span></p> </td><td> <p align=\"center\"><span style=\"color:#222222\"><span style=\"font-size:14px\">向上（北）</span></span></p> </td><td> <p align=\"center\"><span style=\"color:#222222\"><span style=\"font-size:14px\">顺时针</span></span></p> </td></tr></tbody></table></div> \n",
    "     </div> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.delay(delay=None)</span></p> </td><td> <p align=\"center\"><span style=\"color:rgb(34,34,34)\"><span style=\"font-size:14px\">设置或返回以毫秒为单位的绘图延迟。</span></span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.begin_poly()</span></p> </td><td> <p align=\"center\"><span style=\"color:rgb(34,34,34)\"><span style=\"font-size:14px\">开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。</span></span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.end_poly()</span></p> </td><td> <p align=\"center\"><span style=\"color:rgb(34,34,34)\"><span style=\"font-size:14px\">停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。</span></span></p> </td></tr><tr><td> <p align=\"center\"><span style=\"font-size:14px\">turtle.get_poly()</span></p> </td><td> <p align=\"center\"><span style=\"color:rgb(34,34,34)\"><span style=\"font-size:14px\">返回最后记录的多边形。</span></span></p> </td></tr></tbody></table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7.2.3. 命令详解\n",
    "\n",
    "        1) turtle.circle(radius, extent=None, steps=None)\n",
    "\n",
    "        描述：以给定半径画圆\n",
    "\n",
    "        参数：\n",
    "\n",
    "        radius(半径)：半径为正(负)，表示圆心在画笔的左边(右边)画圆；\n",
    "\n",
    "        extent(弧度) (optional)；\n",
    "\n",
    "        steps (optional) (做半径为radius的圆的内切正多边形，多边形边数为steps)。\n",
    "\n",
    "举例:\n",
    "circle(50) # 整圆;\n",
    "\n",
    "circle(50,steps=3) # 三角形;\n",
    "\n",
    "circle(120, 180) # 半圆"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**实例：**\n",
    "\n",
    "1) 太阳花"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# coding=utf-8\n",
    "import turtle\n",
    "import time\n",
    " \n",
    "# 同时设置pencolor=color1, fillcolor=color2\n",
    "turtle.color(\"red\", \"yellow\")\n",
    " \n",
    "turtle.begin_fill()\n",
    "for _ in range(50):\n",
    "    turtle.forward(200)\n",
    "    turtle.left(170)\n",
    "    turtle.end_fill()\n",
    "    \n",
    "turtle.mainloop()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2) 五角星"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# coding=utf-8\n",
    "import turtle\n",
    "import time\n",
    " \n",
    "turtle.pensize(5)\n",
    "turtle.pencolor(\"yellow\")\n",
    "turtle.fillcolor(\"red\")\n",
    " \n",
    "turtle.begin_fill()\n",
    "for _ in range(5):\n",
    "  turtle.forward(200)\n",
    "  turtle.right(144)\n",
    "turtle.end_fill()\n",
    "time.sleep(2)\n",
    "\n",
    "turtle.penup()\n",
    "turtle.goto(-150,-120)\n",
    "turtle.color(\"violet\")\n",
    "turtle.write(\"Done\", font=('Arial', 40, 'normal'))\n",
    " \n",
    "turtle.mainloop()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3) 时钟程序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# coding=utf-8\n",
    " \n",
    "import turtle\n",
    "from datetime import *\n",
    " \n",
    "# 抬起画笔，向前运动一段距离放下\n",
    "def Skip(step):\n",
    "    turtle.penup()\n",
    "    turtle.forward(step)\n",
    "    turtle.pendown()\n",
    " \n",
    "def mkHand(name, length):\n",
    "    # 注册Turtle形状，建立表针Turtle\n",
    "    turtle.reset()\n",
    "    Skip(-length * 0.1)\n",
    "    # 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。\n",
    "    turtle.begin_poly()\n",
    "    turtle.forward(length * 1.1)\n",
    "    # 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。\n",
    "    turtle.end_poly()\n",
    "    # 返回最后记录的多边形。\n",
    "    handForm = turtle.get_poly()\n",
    "    turtle.register_shape(name, handForm)\n",
    " \n",
    "def Init():\n",
    "    global secHand, minHand, hurHand, printer\n",
    "    # 重置Turtle指向北\n",
    "    turtle.mode(\"logo\")\n",
    "    # 建立三个表针Turtle并初始化\n",
    "    mkHand(\"secHand\", 135)\n",
    "    mkHand(\"minHand\", 125)\n",
    "    mkHand(\"hurHand\", 90)\n",
    "    secHand = turtle.Turtle()\n",
    "    secHand.shape(\"secHand\")\n",
    "    minHand = turtle.Turtle()\n",
    "    minHand.shape(\"minHand\")\n",
    "    hurHand = turtle.Turtle()\n",
    "    hurHand.shape(\"hurHand\")\n",
    "   \n",
    "    for hand in secHand, minHand, hurHand:\n",
    "        hand.shapesize(1, 1, 3)\n",
    "        hand.speed(0)\n",
    "   \n",
    "    # 建立输出文字Turtle\n",
    "    printer = turtle.Turtle()\n",
    "    # 隐藏画笔的turtle形状\n",
    "    printer.hideturtle()\n",
    "    printer.penup()\n",
    "    \n",
    "def SetupClock(radius):\n",
    "    # 建立表的外框\n",
    "    turtle.reset()\n",
    "    turtle.pensize(7)\n",
    "    for i in range(60):\n",
    "        Skip(radius)\n",
    "        if i % 5 == 0:\n",
    "            turtle.forward(20)\n",
    "            Skip(-radius - 20)\n",
    "           \n",
    "            Skip(radius + 20)\n",
    "            if i == 0:\n",
    "                turtle.write(int(12), align=\"center\", font=(\"Courier\", 14, \"bold\"))\n",
    "            elif i == 30:\n",
    "                Skip(25)\n",
    "                turtle.write(int(i/5), align=\"center\", font=(\"Courier\", 14, \"bold\"))\n",
    "                Skip(-25)\n",
    "            elif (i == 25 or i == 35):\n",
    "                Skip(20)\n",
    "                turtle.write(int(i/5), align=\"center\", font=(\"Courier\", 14, \"bold\"))\n",
    "                Skip(-20)\n",
    "            else:\n",
    "                turtle.write(int(i/5), align=\"center\", font=(\"Courier\", 14, \"bold\"))\n",
    "            Skip(-radius - 20)\n",
    "        else:\n",
    "            turtle.dot(5)\n",
    "            Skip(-radius)\n",
    "        turtle.right(6)\n",
    "        \n",
    "def Week(t):   \n",
    "    week = [\"星期一\", \"星期二\", \"星期三\",\n",
    "            \"星期四\", \"星期五\", \"星期六\", \"星期日\"]\n",
    "    return week[t.weekday()]\n",
    " \n",
    "def Date(t):\n",
    "    y = t.year\n",
    "    m = t.month\n",
    "    d = t.day\n",
    "    return \"%s %d%d\" % (y, m, d)\n",
    " \n",
    "def Tick():\n",
    "    # 绘制表针的动态显示\n",
    "    t = datetime.today()\n",
    "    second = t.second + t.microsecond * 0.000001\n",
    "    minute = t.minute + second / 60.0\n",
    "    hour = t.hour + minute / 60.0\n",
    "    secHand.setheading(6 * second)\n",
    "    minHand.setheading(6 * minute)\n",
    "    hurHand.setheading(30 * hour)\n",
    "    \n",
    "    turtle.tracer(False) \n",
    "    printer.forward(65)\n",
    "    printer.write(Week(t), align=\"center\",\n",
    "                  font=(\"Courier\", 14, \"bold\"))\n",
    "    printer.back(130)\n",
    "    printer.write(Date(t), align=\"center\",\n",
    "                  font=(\"Courier\", 14, \"bold\"))\n",
    "    printer.home()\n",
    "    turtle.tracer(True)\n",
    " \n",
    "    # 100ms后继续调用tick\n",
    "    turtle.ontimer(Tick, 100)\n",
    " \n",
    "def main():\n",
    "    # 打开/关闭龟动画，并为更新图纸设置延迟。\n",
    "    turtle.tracer(False)\n",
    "    Init()\n",
    "    SetupClock(160)\n",
    "    turtle.tracer(True)\n",
    "    Tick()\n",
    "    turtle.mainloop()\n",
    " \n",
    "if __name__ == \"__main__\":\n",
    "    main()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section3> </a>\n",
    "## 7.3 PIL\n",
    "PIL(Python Image Library)是python的第三方图像处理库，但是由于其强大的功能与众多的使用人数，几乎已经被认为是python官方图像处理库了。<br>\n",
    "其官方主页为:[PIL](http://pythonware.com/products/pil/)。<br>\n",
    "PIL历史悠久，原来是只支持python2.x的版本的，后来出现了移植到python3的库[pillow](http://python-pillow.org/),pillow号称是`friendly fork for PIL`,其功能和PIL差不多，但是支持python3。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "PIL可以做很多和图像处理相关的事情: \n",
    "- **图像归档(Image Archives)**。PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图，转换图像格式，打印图像等等。 \n",
    "- **图像展示(Image Display)**。PIL较新的版本支持包括Tk PhotoImage，BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口，可以用于图像展示。 \n",
    "- **图像处理(Image Processing)**。PIL包括了基础的图像处理函数，包括对点的处理，使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。\n",
    "PIL库同样支持图像的大小转换，图像旋转，以及任意的仿射变换。PIL还有一些直方图的方法，允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强，还有全局的统计分析等。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.3.1 Image class\n",
    "###  Image类是PIL中的核心类，你有很多种方式来对它进行初始化，比如从文件中加载一张图像，处理其他形式的图像，或者是从头创造一张图像等。 \n",
    "下面是PIL Image类中常用的方法: <br> \n",
    "- **open(filename,mode)**(打开一张图像)。下面的代码演示了如何从文件打开一张图像: <br> \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from PIL import Image \n",
    "#Image.open(\"dog.jpg\",\"r\") \n",
    "im = Image.open(\"./img/dog.jfif\",\"r\") \n",
    "print(im.size,im.format,im.mode) \n",
    "#(296, 299) JPEG RGB\n",
    "im.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "help(Image.open)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`Image.open`返回一个Image对象，该对象有`size,format,mode`等属性，其中`size`表示图像的宽度和高度(像素表示);`format`表示图像的格式,常见的包括JPEG,PNG等格式;`mode`表示图像的模式，定义了像素类型还有图像深度等，常见的有RGB,HSV等。一般来说'L'(luminance)表示灰度图像,'RGB'表示真彩图像,'CMYK'表示预先压缩的图像。一旦你得到了打开的Image对象之后，就可以使用其众多的方法对图像进行处理了，比如使用`im.show()`可以展示上面得到的图像。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ **save(filename,format)(保存指定格式的图像)**<br>\n",
    "`im.save(\"dog.png\",'png')`<br>\n",
    "上面的代码将图像重新保存成png格式。<br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "+ **thumbnail(size,resample)(创建缩略图)**<br>\n",
    "`im.thumbnail((50,50),resample=Image.BICUBIC)`<br>\n",
    "`im.show()`<br>\n",
    "上面的代码可以创建一个指定大小(size)的缩略图,需要注意的是，`thumbnail`方法是原地操作，返回值是None。第一个参数是指定的缩略图的大小，第二个是采样的，有`Image.BICUBIC`，`PIL.Image.LANCZOS`，`PIL.Image.BILINEAR`，`PIL.Image.NEAREST`这四种采样方法。默认是`Image.BICUBIC`。<br>\n",
    "\n",
    "+ **crop(box)(裁剪矩形区域)**<br>\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#im = Image.open(\"dog.jpg\",\"r\")\n",
    "box = (100,100,200,200)\n",
    "region = im.crop(box)\n",
    "region.show()\n",
    "im.crop()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上面的代码在im图像上裁剪了一个box矩形区域，然后显示出来。box是一个有四个数字的元组`(upper_left_x,upper_left_y,lower_right_x,lower_right_y)`,分别表示裁剪矩形区域的左上角x,y坐标,右下角的x,y坐标,规定图像的最左上角的坐标为原点`(0,0)`,宽度的方向为x轴，高度的方向为y轴，每一个像素代表一个坐标单位。`crop()`返回的仍然是一个Image对象。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ **transpose(method)(图像翻转或者旋转)**<br>\n",
    "`im_rotate_180 = im.transpose(Image.ROTATE_180)`<br>\n",
    "`im_rotate_180.show()`  \n",
    "上面的代码将im逆时针旋转180°，然后显示出来,`method`是transpose的参数，表示选择什么样的翻转或者旋转方式，可以选择的值有:\n",
    "    - `Image.FLIP_LEFT_RIGHT`,表示将图像左右翻转\n",
    "    - `Image.FLIP_TOP_BOTTOM`,表示将图像上下翻转\n",
    "    - `Image.ROTATE_90`,表示将图像逆时针旋转90°\n",
    "    - `Image.ROTATE_180`,表示将图像逆时针旋转180°\n",
    "    - `Image.ROTATE_270`,表示将图像逆时针旋转270°\n",
    "    - `Image.TRANSPOSE`,表示将图像进行转置(相当于顺时针旋转90°)\n",
    "    - `Image.TRANSVERSE`,表示将图像进行转置,再水平翻转"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "im_rotate_180 = im.transpose(Image.ROTATE_180)\n",
    "im_rotate_180.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ **paste(region,box,mask)(将一个图像粘贴到另一个图像)**  \n",
    "`>>> im.paste(region,(100,100),None)`  \n",
    "`>>> im.show()`  \n",
    "上面的代码将region图像粘贴到左上角为`(100,100)`的位置。region是要粘贴的Image对象,box是要粘贴的位置，可以是一个两个元素的元组，表示粘贴区域的左上角坐标,也可以是一个四个元素的元组，表示左上角和右下角的坐标。如果是四个元素元组的话,box的size必须要和region的size保持一致，否则将会被convert成和region一样的size。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ **split()(颜色通道分离)**  \n",
    "  \n",
    "split()方法可以原来图像的各个通道分离,比如对于RGB图像，可以将其R,G,B三个颜色通道分离。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "r,g,b = im.split()  \n",
    "r.show()  \n",
    "g.show()  \n",
    "b.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ **merge(mode,channels)(颜色通道合并)**  \n",
    "  \n",
    "merge方法和split方法是相对的，其将多个单一通道的序列合并起来，组成一个多通道的图像，mode是合并之后图像的模式，比如\"RGB\",channels是多个单一通道组成的序列。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "im_merge = Image.merge(\"RGB\",[b,r,g])  \n",
    "im_merge.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ **resize(size,resample,box)**  \n",
    "\n",
    "resize方法可以将原始的图像转换大小,size是转换之后的大小,resample是重新采样使用的方法，仍然有`Image.BICUBIC`，`PIL.Image.LANCZOS`，`PIL.Image.BILINEAR`，`PIL.Image.NEAREST`这四种采样方法，默认是`PIL.Image.NEAREST`,box是指定的要resize的图像区域，是一个用四个元组指定的区域(含义和上面所述box一致)。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "im_resize = im.resize((200,200))  \n",
    "im_resize \n",
    "#<PIL.Image.Image image mode=RGB size=200x200 at 0x7F62B9E23470>  \n",
    "im_resize.show()  \n",
    "im_resize_box = im.resize((100,100),box = (0,0,50,50))  \n",
    "im_resize_box.show()  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ **convert(mode,matrix,dither,palette,colors)(mode转换)**  \n",
    "  \n",
    "convert方法可以改变图像的mode,一般是在'RGB'(真彩图)、'L'(灰度图)、'CMYK'(压缩图)之间转换。上面的代码就是首先将图像转化为灰度图，再从灰度图转化为真彩图。值得注意的是,从灰度图转换为真彩图，虽然理论上确实转换成功了，但是实际上是很难恢复成原来的真彩模式的(不唯一)。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'RGB'"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "im_L = im.convert(\"L\")  \n",
    "im_L.show()  \n",
    "im_rgb = im_L.convert(\"RGB\")  \n",
    "im_rgb.show() \n",
    "im_L.mode  \n",
    "#'L'  \n",
    "im_rgb.mode \n",
    "#'RGB'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ **filter(filter)(应用过滤器)**  \n",
    " \n",
    "filter方法可以将一些过滤器操作应用于原始图像，比如模糊操作，查找边、角点操作等。filter是过滤器函数，在PIL.ImageFilter函数中定义了大量内置的filter函数，比如BLUR(模糊操作),`GaussianBlur`(高斯模糊),`MedianFilter`(中值过滤器)，`FIND_EDGES`(查找边)等。上面得到原始图像`dog.jpg`,`find_edges.jpg`以及`blur.jpg`\n",
    "从左到右如下图1所示:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "#im = Image.open(\"dog.jpg\",\"r\")  \n",
    "from PIL import ImageFilter  \n",
    "im_blur = im.filter(ImageFilter.BLUR)  \n",
    "im_blur.show()  \n",
    "im_find_edges = im.filter(ImageFilter.FIND_EDGES)  \n",
    "im_find_edges.show()  \n",
    "im_find_edges.save(\"find_edges.jpg\")  \n",
    "im_blur.save(\"blur.jpg\") "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ **point(lut,mode)(对图像像素操作)**  \n",
    "point方法可以对图像进行单个像素的操作，上面的代码对point方法传入了一个匿名函数,表示将图像的每个像素点大小都乘以1.5,mode是返回的图像的模式，默认是和原来图像的mode是一样的。图2是原来的dog.jpg和point操作之后的im_point.jpg之间的对比。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "im_point = im.point(lambda x:x*1.5)\n",
    "im_point.show()\n",
    "im_point.save(\"im_point.jpg\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面是一个结合了`point`函数,`split`函数,`paste`函数以及`merge`函数的小例子。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "source = im.split() \n",
    "R,G,B = 0,1,2 \n",
    "mask = source[R].point(lambda x: x<100 and 255) \n",
    "# x<100,return 255,otherwise return 0 \n",
    "out_G = source[G].point(lambda x:x*0.7) \n",
    "# 将out_G粘贴回来，但是只保留'R'通道像素值<100的部分 \n",
    "source[G].paste(out_G,None,mask) \n",
    "# 合并成新的图像 \n",
    "im_new = Image.merge(im.mode,source) \n",
    "im_new.show() \n",
    "im.show() \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **ImageEnhance()**(图像增强) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "from PIL import ImageEnhance \n",
    "brightness = ImageEnhance.Brightness(im) \n",
    "im_brightness = brightness.enhance(1.5) \n",
    "im_brightness.show() \n",
    "im_contrast = ImageEnhance.Contrast(im) \n",
    "im_contrast.enhance(1.5) \n",
    "im_contrast.enhance(1.5).show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ImageEnhance是PIL下的一个子类，主要用于图像增强，比如增加亮度(Brightness),增加对比度(Contrast)等。上面的代码将原来图像的亮度增加50%,将对比度也增加了50%。 \n",
    "- **ImageSequence()**(处理图像序列) \n",
    "下面的代码可以遍历gif图像中的所有帧，并分别保存为图像 \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from PIL import ImageSequence \n",
    "from PIL import Image \n",
    "gif = Image.open(\"pipixia.gif\") \n",
    "for i,frame in enumerate(ImageSequence.Iterator(gif),1): \n",
    "    if frame.mode == 'JPEG': \n",
    "        frame.save(\"%d.jpg\" %i) \n",
    "    else: \n",
    "        frame.save(\"%d.png\" % i) \n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "除了上面使用迭代器的方式以外，还可以一帧一帧读取gif,比如下面的代码: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "index = 0 \n",
    "while 1: \n",
    "    try: \n",
    "        gif.seek(index) \n",
    "        gif.save(\"%d.%s\" %(index,'jpg' if gif.mode == 'JPEG' else 'png'))\n",
    "        index += 1 \n",
    "    except EOFError: \n",
    "        print(\"Reach the end of gif sequence!\") \n",
    "        break  \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "上面的代码在读取到gif的最后一帧之后，会throw 一个 EOFError,所以我们只要捕获这个异常就可以了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 图片浮雕处理+文字"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "from PIL import Image, ImageFilter,ImageFont, ImageDraw\n",
    "im=Image.open(\"./img/library.png\")\n",
    "outimag=im.filter(ImageFilter.EMBOSS)\n",
    "ft = ImageFont.truetype(\"C:/WINDOWS/Fonts/HGPTY_CNKI.TTF\", 100)\n",
    "draw=ImageDraw.Draw(outimag)\n",
    "draw.text((30,400), u\"Python图像处理库PIL从入门到精通\",font = ft, fill = 'yellow')\n",
    "outimag.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Python解析Raw格式图像\n",
    "\n",
    "简记下使用rawpy提取raw图像并转化为rgb。rawpy就是libraw的python封装，rawpy.imread直接可以读到raw数据，postprocess方法可以走完isp（BWC、RBGain、demosaic、gamma），得到一副RGB图像。postprocess的参数可以用来控制后处理流程，raw还有enhance模块，主要封装了坏点矫正，更细致的修改查阅官方文档。\n",
    "\n",
    "postprocess不加参数，图片颜色可能不正常，use_camera_wb（如果raw中有相机拍摄时的白平衡参数）或use_auto_wb（使用自带的白平衡算法）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#https://github.com/letmaik/rawpy\n",
    "\n",
    "import rawpy\n",
    "import imageio\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "raw = rawpy.imread('./img/花.NEF')\n",
    "\n",
    "rgb = raw.postprocess(use_camera_wb=True, half_size=True, \n",
    "no_auto_bright=True, output_bps=16)\n",
    "raw.close()\n",
    "\n",
    "print(rgb.dtype, rgb.shape)\n",
    "imageio.imsave('image.tif', rgb)\n",
    "plt.imshow(rgb)\n",
    "plt.pause(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import rawpy\n",
    " \n",
    "openpath = \"D:\\\\IMG\\\\RAWSample\\\\Img.ARW\";\n",
    "savepath = 'D:\\\\IMG\\\\RAWSample\\\\Bayer.raw';\n",
    " \n",
    "with rawpy.imread(openpath) as raw:\n",
    "    bayer_visible = raw.raw_image_visible;\n",
    "    width = bayer_visible.shape[0];\n",
    "    height = bayer_visible.shape[1];\n",
    "#将读取到的RAW原始数据打印出来，\n",
    "#可以知道原始数据图像的宽和高，\n",
    "#打印出原始数据的二维矩阵可以知道图像的位深度。\n",
    "print(bayer_visible.shape)\n",
    "print(bayer_visible)\n",
    "\n",
    "#将二维整型数组转换为字节流，\n",
    "#每两个字节存储一个整型数据，低位在前，高位在后。\n",
    "\n",
    "with open(savepath, 'wb') as f:\n",
    "    for x in range(0,width):\n",
    "        for y in range(0,height):\n",
    "            data = int(bayer_visible[x][y]);\n",
    "            f.write(data.to_bytes(2, byteorder='little'));\n",
    "\n",
    "#得到的RAW文件格式为：\n",
    "# 宽度6024，高度4024，深度：12位，\n",
    "# 颜色滤波阵列为RGGB。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id = Section4> </a>\n",
    "## 7.4 PyVista简介\n",
    "VTK 是一套功能强大的绘图工具，而在 Python 中亦可直接使用 VTK 进行各种图形的绘制，但是 Python 的 VTK 使用方式几乎跟 C++ 版本相同，在开发上需要撰写大量的代码，而 PyVista 则是以 VTK 为基础所开发的 API，让用户可以更方便使用 VTK 进行绘图。<br>\n",
    "其官方主页为:[PyVista](https://docs.pyvista.org/)。<br>\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "^C\n"
     ]
    }
   ],
   "source": [
    "!pip list |grep \n",
    "pyvista"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Maps and Geoscience\n",
    "Download the surface elevation map of Mount St. Helens and plot it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyvista import examples\n",
    "mesh = examples.download_st_helens()\n",
    "warped = mesh.warp_by_scalar('Elevation')\n",
    "surf = warped.extract_surface().triangulate()\n",
    "surf = surf.decimate_pro(0.75)  # reduce the density of the mesh by 75%\n",
    "surf.plot(cmap='gist_earth')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Finite Element Analysis \n",
    "Plot the ‘X’ component of elastic stress of a 3D notch specimen\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyvista import examples\n",
    "mesh = examples.download_notch_stress()\n",
    "mesh.plot(scalars='Nodal Stress', component=0, cmap='turbo', cpos='xy')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Simple Point Cloud with Numpy\n",
    "Easily integrate with NumPy and create a variety of geometries and plot them. You could use any geometry to create your glyphs, or even plot the points directly.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pyvista\n",
    "\n",
    "point_cloud = np.random.random((100, 3))\n",
    "pdata = pyvista.PolyData(point_cloud)\n",
    "pdata['orig_sphere'] = np.arange(100)\n",
    "\n",
    "# create many spheres from the point cloud\n",
    "sphere = pyvista.Sphere(radius=0.02, phi_resolution=10, theta_resolution=10)\n",
    "pc = pdata.glyph(scale=False, geom=sphere, orient=False)\n",
    "pc.plot(cmap='Reds')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plot a Spline \n",
    "Generate a spline from an array of NumPy points.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pyvista\n",
    "\n",
    "# Make the xyz points\n",
    "theta = np.linspace(-10 * np.pi, 10 * np.pi, 100)\n",
    "z = np.linspace(-2, 2, 100)\n",
    "r = z**2 + 1\n",
    "x = r * np.sin(theta)\n",
    "y = r * np.cos(theta)\n",
    "points = np.column_stack((x, y, z))\n",
    "\n",
    "spline = pyvista.Spline(points, 500).tube(radius=0.1)\n",
    "spline.plot(scalars='arc_length', show_scalar_bar=False)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Boolean Operations on Meshes \n",
    "Subtract a sphere from a cube mesh."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pyvista\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "def make_cube():\n",
    "    x = np.linspace(-0.5, 0.5, 25)\n",
    "    grid = pyvista.StructuredGrid(*np.meshgrid(x, x, x))\n",
    "    surf = grid.extract_surface().triangulate()\n",
    "    surf.flip_normals()\n",
    "    return surf\n",
    "\n",
    "\n",
    "# Create example PolyData meshes for boolean operations\n",
    "sphere = pyvista.Sphere(radius=0.65, center=(0, 0, 0))\n",
    "cube = make_cube()\n",
    "\n",
    "# Perform a boolean difference\n",
    "boolean = cube.boolean_difference(sphere)\n",
    "boolean.plot(color='darkgrey', smooth_shading=True, split_sharp_edges=True)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Demo Using pythreejs\n",
    "Create interactive physically based rendering using pythreejs."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyvista import examples\n",
    "\n",
    "# download an example and display it using physically based rendering.\n",
    "#mesh = examples.download_lucy()\n",
    "import pyvista as pv\n",
    "mesh = pv.read(\"./objfile/Buddha.obj\")\n",
    "mesh.plot(color='lightgrey', pbr=True, metallic=0.2,\n",
    "          jupyter_backend='pythreejs')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Demo Using ipygany\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyvista import demos\n",
    "\n",
    "# basic glyphs demo\n",
    "mesh = demos.glyphs(2)\n",
    "\n",
    "text = demos.logo.text_3d(\"I'm interactive!\", depth=0.2)\n",
    "text.points *= 0.1\n",
    "text.translate([0, 1.4, 1.5], inplace=True)\n",
    "mesh += text\n",
    "mesh['Example Scalars'] = mesh.points[:, 0]\n",
    "\n",
    "mesh.plot(cpos='xy', jupyter_backend='ipygany', show_scalar_bar=True)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Demo Using panel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyvista import demos\n",
    "demos.plot_logo(jupyter_backend='panel')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c9c8cb561baf4fa891a8b7c65c11ca92",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Scene(background_color='#4c4c4c', camera={'position': [0.8948567246598957, 0.8948567246598957, 0.8948567246598…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import keyboard\n",
    "from re import S\n",
    "import pyvista as pv\n",
    "mesh=pv.read(\"./objfile/兔子.obj\")\n",
    "#pv.set_jupyter_backend('static')\n",
    "#mesh.plot()\n",
    "\n",
    "plotter = pv.Plotter(notebook=True)\n",
    "plotter.add_mesh(mesh)\n",
    "plotter.show(jupyter_backend='ipygany')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in range(10):\n",
    "    b\n",
    "    t = i+1\n",
    "    item = './贴图/%d.png' % t\n",
    "    print(item)\n",
    "    texture = pv.read_texture(item)\n",
    "    mesh.plot(lighting=True, texture=texture)\n",
    "    keyboard.wait(\"esc\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这里是一个官方提供的弹出式窗口的绘图方案"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\ProgramData\\Anaconda3\\envs\\python310\\lib\\site-packages\\pyvista\\core\\dataset.py:1474: PyVistaDeprecationWarning: Use of `point_arrays` is deprecated. Use `point_data` instead.\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "from threading import Thread\n",
    "import time\n",
    "import numpy as np\n",
    "import pyvista as pv\n",
    "import pyvistaqt as pvqt\n",
    "from pyvista import examples\n",
    "\n",
    "\n",
    "globe = examples.load_globe()\n",
    "globe.point_arrays['scalars'] = np.random.rand(globe.n_points)\n",
    "globe.set_active_scalars('scalars')\n",
    "\n",
    "\n",
    "plotter = pvqt.BackgroundPlotter()\n",
    "plotter.add_mesh(globe, lighting=False, show_edges=True,\n",
    "                 texture=True, scalars='scalars')\n",
    "plotter.view_isometric()\n",
    "\n",
    "# shrink globe in the background\n",
    "\n",
    "\n",
    "def shrink():\n",
    "    for i in range(50):\n",
    "        globe.points *= 0.95\n",
    "        # Update scalars\n",
    "        globe.point_arrays['scalars'] = np.random.rand(globe.n_points)\n",
    "        time.sleep(0.5)\n",
    "\n",
    "\n",
    "thread = Thread(target=shrink)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pyvista as pv\n",
    "sphere1 = pv.Sphere(radius=0.1, center=(0, 0, 0))\n",
    "sphere2 = pv.Sphere(radius=0.1, center=(0, 0, 1))\n",
    "data = [sphere1,sphere2]\n",
    "blocks = pv.MultiBlock(data)\n",
    "blocks.plot(jupyter_backend='static',show_axes=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pyvista as pv\n",
    "import numpy as np\n",
    "import time\n",
    "start_time=time.time()\n",
    "data = [pv.Sphere(radius=0.01, center=(np.random.random(), np.random.random(), np.random.random())) for i in range(1000)]\n",
    "blocks = pv.MultiBlock(data)\n",
    "blocks.plot(jupyter_backend='static',show_axes=1)\n",
    "end_time=time.time()\n",
    "print ('The time cost of ploting {} spheres is: {}s'.format(len(data),end_time-start_time))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pyvista as pv\n",
    "sphere = pv.Sphere()\n",
    "plotter = pv.Plotter(notebook=True)\n",
    "plotter.add_mesh(sphere)\n",
    "plotter.show(jupyter_backend='ipygany')\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.10.4 ('python310')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.4"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "a888cd810c90be07c3c921372a6d7ff433f5a38d5779dfb2a871d99db75673fb"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
